package com.dzu.easy;

/**
 * @author ZhaoDong
 * @date 2022/8/31 9:57
 * @description 485. 最大连续 1 的个数
 * 给定一个二进制数组 nums ， 计算其中最大连续 1 的个数。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：nums = [1,1,0,1,1,1]
 * 输出：3
 * 解释：开头的两位和最后的三位都是连续 1 ，所以最大连续 1 的个数是 3.
 * 示例 2:
 *
 * 输入：nums = [1,0,1,1,0,1]
 * 输出：2
 *  
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/max-consecutive-ones
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Test485 {

    public static void main(String[] args) {
        int i = findMaxConsecutiveOnes(new int[]{1, 0, 1, 1, 0, 1});
        System.out.println(i);
    }

    // 2ms
    public static int findMaxConsecutiveOnes2(int[] nums) {
        int maxCount = 0, count = 0;
        int n = nums.length;

        for (int i = 0; i < n; i++) {
            if (nums[i] == 1) {
                count++;
            } else {
                maxCount = Math.max(maxCount, count);
                count = 0;
            }
        }
        maxCount = Math.max(maxCount, count);
        return maxCount;
    }


    // 3ms
    public static int findMaxConsecutiveOnes(int[] nums) {
        int max = 0;
        int start = 0;
        int length = nums.length;

        for (int end = 0; end < length; end++) {
            int num = nums[end];
            if (num == 0) {
                start = end + 1;
            } else {
                max = Math.max(max, end - start + 1);
            }
        }
        return max;
    }


}
